package com.wxmit.ot.gen.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.wxmit.ot.base.core.OtBaseEntity;
import com.wxmit.ot.base.validate.AddGroup;
import com.wxmit.ot.base.validate.UpdateGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.util.Map;

/**
 * 生成代码模版组内元素说明
 *
 * @author huangxiong
 * @version V1.0
 * @date 2023/2/22 14:25
 */

@EqualsAndHashCode(callSuper = true)
@Data
@TableName("ot_gen_group_item")
public class GenGroupItem extends OtBaseEntity {

    public static final String SEPARATOR = "/";

    @TableId(type = IdType.AUTO)
    @NotNull(message = "修改操作，id不能为空！",groups = {UpdateGroup.class})
    @Null(message = "新增操作，不可携带id！",groups = {AddGroup.class})
    private Long id;

    /**
     *  文件路径
     *  例如：/srt/views/
     */
    @NotNull(message = "模版组元素路径不能为空！")
    private String path;

    /**
     *  文件名（可使用变量）
     *  例如：${ClassName}Xxx.xxx
     */
    @NotNull(message = "模版组元素名不能为空！")
    private String name;

    private String remark;

    @NotNull(message = "模版组元素必须绑定一个模版组！")
    private Long groupId;

    /**
     *  语言，用于代码模版渲染使用
     *  例：JAVA、VUE、TS...
     */
    private String language;

    private String code;

    /**
     * 处理文件路径，避免前后无 / 导致系统出错
     */
    public void processPath() {
        String prefix = "";
        String suffix = "";
        if(!this.getPath().startsWith(SEPARATOR)){
            prefix = SEPARATOR;
        }
        if(!this.getPath().endsWith(SEPARATOR)){
            suffix = SEPARATOR;
        }
        this.setPath(prefix + this.getPath() + suffix);
    }
}
